from django.db import models

# Create your models here.



class Area(models.Model):
    name = models.CharField(max_length=20)
    # 自定义外键名
    #‘self’ 外建与自己做关联
    parent = models.ForeignKey('self', on_delete=models.SET_NULL,  # SET_NULL在删除对象把其他子对象设置为空
                               related_name='subs', null=True, blank=True, verbose_name='上级行政区划')  # 详细名称

    # 有related_name
    # 首先获得水果模型中外键指向的表中对象：
    # buyer = Buyer.objects.filter(age=100).first()
    # 然后通过子表中自定义的外键获取子表的所有信息：
    # fruits = buyer.buyer_fruit.all()


#     如果我们想要获取所有Entry表里blog这个字段的值为blog_1，怎么处理呢，一般来说是：
# entry_list = Entry.objects.filter(blog=blog_1)
#
#     但是因为blog这个字段是外键，所以我们使用反向过滤器来处理     注意下划线 _
# entry_list = blog_1.entry_set.all()

    # 没有related_name
    # buyer.fruits_set.all()

    class Meta:
        db_table = 'tb_areas'
        verbose_name = '省市区'
        verbose_name_plural = '省市区'

    def __str__(self):
        return self.name


'''    
on_delete 的相关函数用法  https://www.zhihu.com/question/511532322

SET_NULL 参数
当删除一个对象时，所有对象的引用对象都设置为 NULL，而不会被删除
'''
